package luogu.editor;
import java.util.*;
public class U549625 {
    // 对于所有 1≤i≤n 的下标 i ，都从数组中选择一段连续的区间 [l,r] 使得 l≤i≤r 
    // ，即选择一个包含 i 的区间的话，这段区间和最大是几？
    
}
class Main {
    // TODO 存在逻辑错误
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int[] sum = new int[n];
        int[] suf = new int[n];
        int[] pre = new int[n];
        for (int i = 0; i < n; i++){
            arr[i] = sc.nextInt();
            sum[i] = (i==0)?arr[i]:sum[i-1]+arr[i];
            if (i!=0) {
                suf[i-1] = Math.max(suf[i], sum[i-1]);
            }
            pre[i] = (i==0)?Integer.MAX_VALUE:Math.min(pre[i-1], sum[i]);
        }
        // 对于最大的区间和, 就是在保证包含i的情况下, Sn - Sm = 区间和, Sn取最大的, Sm取最小的.
        for (int i = 0; i < n; i++){
            if (i==0) {
                System.out.print(suf[i]);
                System.out.print(" ");
            }else {
                System.out.print(suf[i]-pre[i]);
                System.out.print(" ");
            }
        }
    }
}
